Avertissement! : Cet article étant à présent ancien, il semble que les dernières versions de Jest gèrent directement les rapports Sonar, il n’est donc plus utile de recourir à une librairie tierce. Merci de vous référer à la documentation.
Sonar est un outil de test de la qualité de code. Il se base sur un ensemble de règles qui ont une sévérité : code smell, bug, vulnerability, security hotspot. Sonar permet aussi d’afficher les résultats de la couverture de code, c’est à dire le pourcentage de lignes de code qui est testée dans l’application. Il ne se charge cependant pas du calcul à proprement parler.
Par exemple, pour un projet JAVA basé sur Maven, c’est en général le plugin Maven Jacoco qui se charge du calcul de la couverture. Il suffit de déclarer ce plug-in et le tour est joué. Pour l’analyse de code du frontend (basé bien souvent sur le langage Javascript, ou Typescript), il va falloir effectuer une conversion des rapports de couverture de code depuis Jest (l’outil de test frontend) vers Sonar. Nous allons voir comment.
Générer nos rapports de tests Jest
Flag coverage
Pour générer vos rapports de tests d’une application frontend via Jest, il faut ajouter le flag coverage
. Cela va générer un répertoire coverage contenant tous les rapports de test au format Jest.
La commande pour executer les et les rapports associés est donc :
npm run test --coverage
Flag watchAll
Nous ne voulons pas que nos tests s’executent en mode watch (bien que cette fonctionnalié peut s’avérer intéressante dans d’autres circonstances). Nouus allons donc la désactiver via la cxommande watchAll=false
:
Notre commande devient donc :
npm run test --coverage --watchAll=false
Conversion des rapports Jest vers Sonar
Nos rapports sont correctement générés dans le répertoire coverage, il faut donc les transformer en un format compréhensible par Sonar. C’est l’objet de la librairie jest-sonar-reporter.
Il suffit d’ajouter le flag testResultsProcessor
.
Notre commande devient donc:
npm run test --coverage --watchAll=false --testResultsProcessor=jest-sonar-reporter
Il faut aussi mettre à jour ou mettre à jour la configuration Sonar pour appeler le bon rapport :
sonar.testExecutionReportPaths=test-report.xml
(Par défaut le fichier généré par jest-sonar-reporter est test-report.xml.)
Lancer l’analyse Sonar, et le tour est joué! Vous devriez avoir vos beaux rapports de couverture de code Jest dans Sonar!